#ifndef VLCPLAYERWIDGET_H
#define VLCPLAYERWIDGET_H
#include "vlc/vlc.h"
#include <QObject>
#include <QWidget>

class VlcPlayerWidget : public QWidget
{
    Q_OBJECT
public:
    explicit VlcPlayerWidget(QWidget *parent = nullptr);
    ~VlcPlayerWidget() override;

        // 打开视频文件
        void openFile(const QString &filePath);
        // 控制播放
        void play();
        void pause();
        void stop();
        bool initVLC();
        bool play(const QString & name, void * hwnd);
        void setVolume(int value);
        void setPosition(int value);
          libvlc_media_player_t * mediaPlayer() const { return _mediaPlayer;   }
          libvlc_time_t durations() const {   return _totalSec;   }
          //当需要修改UI界面的显示时，通过信号来触发，以下三个函数调用时就触发信号
          void setTimeSliderPos(int value);
          void setTimeText(const QString & str);
          void setVolumePos(int value);
       signals://自定义信号
          void sigTimeSliderPos(int value);
          void sigTimeText(const QString & str);
          void sigVolumeSliderPos(int value);
    private:
        libvlc_instance_t *_vlcInstance;    // VLC 实例
        libvlc_media_player_t *_mediaPlayer;// 媒体播放器
        libvlc_media_t *_media;             // 媒体对象
        libvlc_event_manager_t *    _pEventManager = nullptr;
        libvlc_time_t _totalSec = 0;//一个文件的总时
        // 重写窗口大小变化事件，更新视频渲染区域
        void resizeEvent(QResizeEvent *event) override;
signals:

};

#endif // VLCPLAYERWIDGET_H
